<?php

class Doctrine_Model_ReferenciasDoctrineDao {

    public function getEntityManager() {
        if (Zend_Registry::isRegistered('em')) {
            return Zend_Registry::get('em');
        }
        return null;
    }

    public function obtenerTodos($nombreClase) {
        return $this->getEntityManager()
                        ->createQuery('select p from ' . $nombreClase . ' p  ')
                        ->getResult();
    }

    public function obtenerTodosOrdenados($nombreClase) {
        return $this->getEntityManager()
                        ->createQuery('select p from ' . $nombreClase . ' p ')
                        ->getResult();
    }

    public function obtenerPorId($nombreClase, $id) {

        return $this->getEntityManager()->find($nombreClase, $id);
    }
    
     public function existe($nombreClase, $descrip) {
        
        $a =  $this->getEntityManager()
                        ->createQuery("select p from "  .$nombreClase.  " p where p.descripcion ='".$descrip."'")
                        ->getResult();
        
        if(count($a) > 0){
            return true;
        } else {
            return false;
        } 
    }

    public function guardar( $objeto) {
        try {
            $this->getEntityManager()->persist($objeto);
            $this->getEntityManager()->flush();
            return true;
        } catch (Exception $e) {
            $logger = Zend_Registry::get('logger');
            $logger->log( $e->getMessage() ." - ". $e->getTraceAsString(), Zend_Log::ERR);
            return false;
        }
    }

    public function eliminar($nombreClase, $objeto) {
        try {
            $this->getEntityManager()->remove($objeto);
            $this->getEntityManager()->flush();
            return true;
        } catch (Exception $e) {
            $logger = Zend_Registry::get('logger');
            $logger->log("Error: " . $e->getMessage(), Zend_Log::ERR);

            return false;
        }
    }
      public function eliminarTodos($nombreClase) {
        return $this->getEntityManager()
                        ->createQuery('delete  from ' . $nombreClase )
                        ->getResult();
    }

}

